package com.example.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5密码加密工具类
 */
public class Md5Util {

    /**
     * 对明文密码进行MD5加密
     * @param plainPassword 明文密码
     * @return 加密后的密文（32位大写）
     */
    public static String encrypt(String plainPassword) {
        try {
            // 获取MD5加密实例
            MessageDigest md = MessageDigest.getInstance("MD5");

            // 对密码进行加密处理
            byte[] bytes = md.digest(plainPassword.getBytes());

            // 将字节数组转换为十六进制字符串
            StringBuilder sb = new StringBuilder();
            for (byte b : bytes) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    sb.append("0");
                }
                sb.append(hex);
            }

            // 返回大写形式的加密结果
            return sb.toString().toUpperCase();
        } catch (NoSuchAlgorithmException e) {
            // 理论上不会抛出此异常，因为MD5是标准算法
            throw new RuntimeException("MD5加密失败", e);
        }
    }

    // 测试方法
    public static void main(String[] args) {
        // 测试加密功能
        String plainPassword = "123456";
        String encryptedPassword = encrypt(plainPassword);
        System.out.println("明文密码：" + plainPassword);
        System.out.println("MD5加密后：" + encryptedPassword);
    }
}
